<?php
// 智能网站生成器 - 辅助函数文件

// 自定义视图助手函数
function view($template, $data = []) {
    $viewPath = APP_PATH . 'view/';
    $templateFile = $viewPath . str_replace('.', '/', $template) . '.html';
    
    if (file_exists($templateFile)) {
        extract($data);
        ob_start();
        include $templateFile;
        return ob_get_clean();
    }
    return "模板文件不存在: $templateFile";
}

// 自定义请求助手函数
function request() {
    return new class {
        public function isPost() {
            return $_SERVER['REQUEST_METHOD'] === 'POST';
        }
        
        public function post($key = null, $default = null) {
            if ($key === null) {
                return $_POST;
            }
            return isset($_POST[$key]) ? $_POST[$key] : $default;
        }
        
        public function get($key = null, $default = null) {
            if ($key === null) {
                return $_GET;
            }
            return isset($_GET[$key]) ? $_GET[$key] : $default;
        }
    };
}

// 自定义JSON响应助手函数
function json($data) {
    header('Content-Type: application/json');
    return json_encode($data);
}

// 自定义组件数据获取函数
function get_component_data($componentType, $filename = null) {
    $componentsDir = TEMPLATE_PATH . 'datas/components/';
    $file = $filename ?: ($componentType . '.json');
    $filePath = $componentsDir . $file;
    
    if (file_exists($filePath)) {
        $json = file_get_contents($filePath);
        return json_decode($json, true);
    }
    
    // 返回默认数据
    $defaultData = [
        'name' => '默认' . get_component_title($componentType),
        'description' => '这是一个默认的' . get_component_title($componentType),
        'type' => $componentType
    ];
    
    return $defaultData;
}

// 自定义组件标题获取函数
function get_component_title($componentType) {
    $titles = [
        'navbar' => '导航栏',
        'hero' => '英雄区',
        'services' => '服务介绍',
        'about' => '关于我们',
        'cases' => '案例展示',
        'team' => '团队介绍',
        'testimonials' => '客户评价',
        'contact' => '联系表单',
        'footer' => '页脚',
        'searchBar' => '搜索栏'
    ];
    
    return $titles[$componentType] ?? $componentType;
}

// 自定义AI生成组件数据函数
function ai_generate_component_data($componentType, $params = []) {
    // 模拟AI生成数据
    $baseData = get_component_data($componentType);
    
    // 根据参数调整数据
    if (isset($params['keywords'])) {
        $baseData['description'] = $params['keywords'] . ' - ' . $baseData['description'];
    }
    
    // 模拟AI处理延迟
    usleep(500000);
    
    return $baseData;
}

// 生成唯一ID
function generate_unique_id() {
    return md5(uniqid(rand(), true));
}

// 检查并创建目录
function ensure_directory($dir) {
    if (!is_dir($dir)) {
        mkdir($dir, 0755, true);
    }
    return $dir;
}

// 获取配置项
function config($key = null, $default = null) {
    static $config = [];
    
    if (empty($config)) {
        $configFiles = glob(CONFIG_PATH . '*.php');
        foreach ($configFiles as $file) {
            $configData = include $file;
            $configKey = basename($file, '.php');
            $config[$configKey] = $configData;
        }
    }
    
    if ($key === null) {
        return $config;
    }
    
    $keys = explode('.', $key);
    $value = $config;
    
    foreach ($keys as $k) {
        if (!isset($value[$k])) {
            return $default;
        }
        $value = $value[$k];
    }
    
    return $value;
}

// 日志记录函数
function logger($message, $level = 'info') {
    $logDir = ROOT_PATH . 'runtime/logs/';
    ensure_directory($logDir);
    
    $logFile = $logDir . date('Y-m-d') . '.log';
    $timestamp = date('Y-m-d H:i:s');
    $logMessage = "[$timestamp] [$level] $message\n";
    
    file_put_contents($logFile, $logMessage, FILE_APPEND);
}

// 错误处理函数
function handle_error($errno, $errstr, $errfile, $errline) {
    $errorTypes = [
        E_ERROR => 'ERROR',
        E_WARNING => 'WARNING',
        E_PARSE => 'PARSE',
        E_NOTICE => 'NOTICE',
        E_CORE_ERROR => 'CORE_ERROR',
        E_CORE_WARNING => 'CORE_WARNING',
        E_COMPILE_ERROR => 'COMPILE_ERROR',
        E_COMPILE_WARNING => 'COMPILE_WARNING',
        E_USER_ERROR => 'USER_ERROR',
        E_USER_WARNING => 'USER_WARNING',
        E_USER_NOTICE => 'USER_NOTICE',
        E_STRICT => 'STRICT',
        E_RECOVERABLE_ERROR => 'RECOVERABLE_ERROR',
        E_DEPRECATED => 'DEPRECATED',
        E_USER_DEPRECATED => 'USER_DEPRECATED'
    ];
    
    $level = isset($errorTypes[$errno]) ? $errorTypes[$errno] : 'UNKNOWN';
    $message = "$errstr in $errfile on line $errline";
    
    logger($message, $level);
    
    // 显示错误信息（仅在开发环境）
    if (config('app.debug', false)) {
        echo "<div style='background: #f00; color: #fff; padding: 10px;'>$level: $message</div>";
    }
    
    return true; // 阻止标准错误处理
}

// 设置错误处理函数
set_error_handler('handle_error');